package com.hhkj.admin.common.annotation;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Idempotent {

    /** 使用登录的用户类型 **/
    UserTypeCode userTypeCode() default UserTypeCode.SYS_USER;

    /** 单位(秒) **/
    long timeout() default 1;

    /** 方法结束时自动释放锁 true-自动释放 false-不自动释放（会等待过期时间） **/
    boolean autoRelease() default true;

    String customizeSuffix() default "";

    @AllArgsConstructor
    @Getter
    enum UserTypeCode {

        SYS_USER("系统用户", "sysUser"),

        SALE("销售", "sale"),

        STUDENT("学员", "student");

        private final String name;

        private final String code;
    }

}
